package net.sdd.school.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.sdd.common.result.Result;
import net.sdd.school.entity.Trainer;
import net.sdd.school.service.ITrainerService;
import net.sdd.school.vo.query.TrainerQueryVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 培训师 前端控制器
 * </p>
 *
 * @author Jet
 * @since 2022-08-16
 */
@RestController
@RequestMapping("/sddonline/trainer")
@Api(tags = "培训师管理")
public class TrainerController {

    @Autowired
    private ITrainerService trainerService;

    /**
     * 列表展示
     * @return
     */
    @GetMapping
    @ApiOperation("查询全部")
    public Result findAll(){
        List<Trainer> list = trainerService.list();
        return Result.ok().data("list",list).message("查询成功");
    }

    /**
     * 分页查询,查询条件：培训师姓名、头衔、入驻时间（范围）
     * 注意：因为使用了@RequestBody注解，所以不能使用get请求，因为get请求没有请求体
     */
    @PostMapping("/page/{current}/{size}")
    @ApiOperation("分页查询")
    public Result findByPage(
            @PathVariable("current") Integer current,
            @PathVariable("size") Integer size,
            @RequestBody TrainerQueryVo queryVo){
        // 调用service方法，在service中拼接查询条件
        IPage<Trainer> page = trainerService.findByPage(current,size,queryVo);
        return Result.ok()
                .data("list",page.getRecords())
                .data("total",page.getTotal());
    }

    @GetMapping("/{id}")
    @ApiOperation("根据id查询")
    public Result findById(@PathVariable("id") String id){
        Trainer trainer = trainerService.getById(id);
        return Result.ok().data("trainer",trainer);
    }

    @ApiOperation("添加或修改")
    @PostMapping
    public Result saveOrUpdate(@RequestBody Trainer trainer) {
        // mp 提供的保存或修改方法，会自动根据id判断；id为空就是新增。
        trainerService.saveOrUpdate(trainer);
        return Result.ok();
    }

    @ApiOperation("删除")
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable("id") String id) {
        trainerService.removeById(id);
        return Result.ok();
    }


    @ApiOperation("批量删除")
    @PostMapping("/del/batch")
    public Result delete(@RequestBody List<String> ids) {
        trainerService.removeByIds(ids);
        return Result.ok();
    }

}














